home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 2614.ZIP / TSL.ZIP / TSL.ASM next >
Assembly Source File  |  1989-08-29  |  2KB  |  96 lines

  1. ; TSL.ASM
  2.  
  3. INCLUDE EXTENDA.INC
  4. CLpublic <TSL>
  5.  
  6. CODESEG
  7.  
  8. CLfunc char TSL <char String,char Source,char Dest,int TableLen,int FieldLen>
  9.  
  10. CLcode
  11.  
  12.      PUSH     ES
  13.  
  14.      CMP      PCOUNT,5
  15.      JB       TSL_RET
  16.      TESTNUL  String
  17.      JZ       TSL_RET
  18.  
  19.      LES      SI,String
  20.      MOV      BX,0
  21.  
  22. TSL_LOOP:
  23.  
  24.      CMP      BX,FieldLen
  25.      JE       TSL_RET
  26.      MOV      AL,BYTE PTR ES:[BX+SI]
  27.      CMP      AL,20H
  28.      JZ       LOOP_INS
  29.  
  30.      CMP      AL,127
  31.      JA       CHANGE_IT
  32.      JB       REPLACE
  33.  
  34. CHANGE_IT:
  35.      CALL     LOOKUP
  36.  
  37. REPLACE:
  38.      MOV      BYTE PTR ES:[BX+SI],AL
  39.  
  40. LOOP_INS:
  41.      INC      BX
  42.      JMP      TSL_LOOP
  43.  
  44. TSL_RET:
  45.      POP      ES
  46.  
  47.      CLret    String
  48.  
  49. WORKFUNCS
  50.  
  51. LOOKUP   PROC          NEAR
  52.          PUSH          SI
  53.          PUSH          DI
  54.          PUSH          ES
  55.  
  56.          PUSH          DS
  57.          POP           ES
  58.          PUSH          BX
  59.          PUSH          AX
  60.  
  61.  
  62.          MOV           AX,DS
  63.          MOV           ES,AX
  64.          POP           AX
  65.          LES           DI, Source
  66.          MOV           BX,DI
  67.          MOV           CX,TableLen
  68.          CLD
  69.          REPNE         SCASB
  70.          JZ            GOT_HIT
  71.          JMP           LOOKUP_EXIT
  72.  
  73. GOT_HIT:
  74.          PUSH          SI
  75.          DEC           DI
  76.          SUB           DI,BX
  77.          MOV           BX,DI
  78.          LES           SI,Dest
  79.          MOV           AL,ES:[SI+BX]
  80.          POP           SI
  81.  
  82. LOOKUP_EXIT:
  83.  
  84.          POP           BX
  85.          POP           ES
  86.          POP           DI
  87.          POP           SI
  88.                        RET
  89.  
  90. LOOKUP   ENDP
  91.  
  92. ENDWORK
  93.  
  94.      END
  95.  
  96.